#ifndef MY_RENDER_WORLD
#define MY_RENDER_WORLD

#include "./object.hpp"
#include <vector>
#include "../camera/camera.hpp"
#include "./triangle.hpp"
namespace object{

    // 这是一个世界基类，只存放着点物体，这段代码写的很烂，我的思路有错误，但是我不想改了，因为本身就不常用
    class World{
        public:
        // 这是一个容器，用来存放所有的物体。暂时只有object和摄像机
        std::vector<Object> objects;
        camera::Camera camera;

        World(std::vector<Object> objects,camera::Camera camera):objects(objects),camera(camera){};
        World(){};
    };


    // 这是一个只有颜色的世界,空间中的所有物体都能被压缩为一个只有点和三角形的物体
    class ColorWorld{
        public:
        std::vector<Dot> vertices;
        std::vector<ColorTriangle> colorTriangles;
        camera::Camera camera;
        ColorWorld(){};
        ColorWorld(camera::Camera camera):camera(camera){};
        template<typename T>
        void insertColorObject(const T& colorObject);
        
    };

    // 初始化一个世界
    World generateWorld1();
    ColorWorld generateWorld2();
    ColorWorld generateWorld3();
    ColorWorld generateWorld4();
}




#endif